<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>初始Promise</title>
  </head>
  <body>
    <!-- 
        1、Promise是什么？
            1.理解： 
                抽象表达：
                    Promise是JS中进行异步编程的新方案（旧的是谁？纯回调ajax）
                具体表达：
                （1） 从语法上来说：Promise是一个内置构造函数
                （2）从功能上来说：promise对象用来封装一个异步操作并可以获取其成功/失败的值
     -->
    <script>
      /*
            1、Promise不是回调，是一个内置的构造函数，是程序员自己new调用的
            2、new Promise的时候，要传入一个回调函数，它是同步的回调，会立即在主线程上执行，它被称为executor函数
            3、每一个Promise实例对象都有三种状态，分别为：
                      初始化 (pending)、成功（fulfilled）、失败（rejected）
            4、每一个Promise实例对象在刚被new出来的那一刻，状态都是初始化（pending）
            5、executor函数会接收到两个参数，它们都是函数，分别用形参：resolve、reject接收
                （1）调用resolve函数会：
                    让Promise实例状态变为：成功（fulfilled）；
                    同时可以指定成功的value
                （2）调用reject函数会
                    让Promise实例状态变为：失败（rejected）；
                    同时可以指定失败的reason
        */
      // 创建一个Promise实例对象
      const p = new Promise((resolve, reject) => {
        resolve('ok')
        // console.log('p')
      })
      console.log('主线程@', p) //一般不把Promise实例做控制台输出
    </script>
  </body>
</html>
